﻿using Credinka.Ayni.SEA.AD;
using Credinka.Ayni.SEA.EN;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Transactions;
using Credinka.Ayni.GEN.UTL;

namespace Credinka.Ayni.SEA.RN {
  public class rnAlerta : rnGeneral {
    adAlerta oadAlerta;
    adAlertaGrupo oadAlertaGrupo;
    enAlertaGrupo oenAlertaGrupo;

    public List<enAlerta> Listar(enAlerta poenAlerta) {
      List<enAlerta> loenAlerta = null;
      using (SqlConnection con = new SqlConnection(sConexionGeneral)) {
        try {
          con.Open();
          loenAlerta = new List<enAlerta>();
          oadAlerta = new adAlerta(con);
          loenAlerta = oadAlerta.fListar(poenAlerta);
        } catch (SqlException ex) {
        }
      }
      return (loenAlerta);
    }

    public int Registrar(enAlerta poenAlerta, List<enGrupo> lstGrupo) {
      int N = -1;
      using (SqlConnection con = new SqlConnection(sConexionGeneral)) {
        try {
          con.Open();
          oadAlerta = new adAlerta(con);
          oadAlertaGrupo = new adAlertaGrupo(con);
          using (TransactionScope scope = new TransactionScope()) {
            N = oadAlerta.fRegistrar(poenAlerta);
            if (N > 0) {
              for (int i = 0; i < lstGrupo.Count; i++) {
                oenAlertaGrupo = new enAlertaGrupo();
                oenAlertaGrupo.IdGrupo = lstGrupo[i].IdGrupo;
                oenAlertaGrupo.IdAlerta = N;
                oenAlertaGrupo.CodigoEstado = Convert.ToInt32(utlEnumerado.Estado.Activo);
                oenAlertaGrupo.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
                oenAlertaGrupo.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
                oenAlertaGrupo.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
                oadAlertaGrupo.fRegistrar(oenAlertaGrupo);
              }
            }
            scope.Complete();
          }
        } catch (SqlException ex) { }
      }
      return (N);
    }

    public bool Modificar(enAlerta poenAlerta) {
      bool opcion = false;
      using (SqlConnection con = new SqlConnection(sConexionGeneral)) {
        try {
          con.Open();
          oadAlerta = new adAlerta(con);
          opcion = oadAlerta.fModificar(poenAlerta);
        } catch (SqlException ex) {
        }
      }
      return opcion;
    }

    public enAlerta Obtener(enAlerta poenAlerta) {
      enAlerta oenAlerta = null;
      using (SqlConnection con = new SqlConnection(sConexionGeneral)) {
        try {
          con.Open();
          oenAlerta = new enAlerta();
          oadAlerta = new adAlerta(con);
          oenAlerta = oadAlerta.fObtener(poenAlerta);
        } catch (SqlException ex) {
        }
      }
      return oenAlerta;
    }
  }
}
